home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earkit / news / thor / rexx / saveuserlist.thor < prev    next >
Text File  |  1998-05-24  |  5KB  |  227 lines

  1. /*  $VER: SaveUserlist.thor 1.2 (10.9.97)
  2.  *
  3.  *  Save the user database from a system to a file.
  4.  *
  5.  *  Can also parse into a system a file previously saved
  6.  *  by this script.
  7.  *  
  8.  *  Script by: Petter Nilsen, Ultima Thule Software.
  9.  */
  10.  
  11. /*trace results*/
  12.  
  13. UDB_DELETED       = 0  /* User is deleted */
  14.  
  15. options results
  16.  
  17. thorport = address()
  18.  
  19. if ~show('p', 'BBSREAD') then do
  20.     address command
  21.         "run >nil: `GetEnv THOR/THORPath`bin/LoadBBSRead"
  22.         "WaitForPort BBSREAD"
  23. end
  24.  
  25. address(thorport)
  26.  
  27. REQUESTNOTIFY TEXT '"Parse an old list into the userdatabase ?"' BT '" _Yes | _No "'
  28. if(rc ~= 0) then
  29. do
  30.     say THOR.LASTERROR
  31.     exit
  32. end
  33.  
  34. if(result = 1) then 
  35. do
  36.     GETGLOBALCONFIG stem GLOBALCONFIG
  37.  
  38.     REQUESTFILE TITLE '"Select userlist to parse:"' ID '"'GLOBALCONFIG.SAVEDIR'"' FP
  39.     if(rc ~= 0 | result = "") then exit
  40.     else file = result
  41.  
  42.     CURRENTSYSTEM stem CURRENT
  43.     if(rc = 30) then
  44.     do
  45.         say THOR.LASTERROR
  46.         exit
  47.     end
  48.     else
  49.     if(rc = 1) then
  50.     do
  51.         address(BBSREAD)
  52.         GETBBSLIST BBSLIST
  53.         if(rc ~= 0) then
  54.         do
  55.             say BBSREAD.LASTERROR
  56.             exit
  57.         end
  58.         address(thorport)
  59.         REQUESTLIST instem BBSLIST title '"Select system to parse into:"' SIZEGADGET
  60.         if(rc ~= 0) then exit
  61.         else CURRENT.BBSNAME = result
  62.     end
  63.  
  64.     address(BBSREAD)
  65.  
  66.     GETBBSDATA '"'CURRENT.BBSNAME'"' stem BBSDATA
  67.     if(rc ~= 0) then 
  68.     do
  69.         say BBSREAD.LASTERROR
  70.         exit
  71.     end
  72.  
  73.     if(~open(fh, file, 'R')) then 
  74.     do
  75.         say "Failed to open file: "file
  76.         exit
  77.     end
  78.  
  79.     do while(~eof(fh))
  80.         line = readln(fh)
  81.         if(line = '#') then
  82.         do
  83.             drop USER.
  84.             line = readln(fh)
  85.             if(left(line, 6) = "Name: ") then
  86.             do
  87.                 USER.NAME = substr(line, 7)
  88.                 say "Name:" USER.NAME
  89.                 line = readln(fh)
  90.             end
  91.             if(left(line, 9) = "Address: ") then
  92.             do
  93.                 USER.ADDRESS = substr(line, 10)
  94.                 say "Address:" USER.ADDRESS
  95.                 line = readln(fh)
  96.             end
  97.             if(left(line, 7) = "Alias: ") then
  98.             do
  99.                 USER.ALIAS = substr(line, 8)
  100.                 say "Alias:" USER.ALIAS
  101.                 line = readln(fh)
  102.             end
  103.             if(left(line, 9) = "Comment: ") then
  104.             do
  105.                 USER.COMMENT.1 = substr(line, 10)
  106.                 say "Comment:" USER.COMMENT.1
  107.                 USER.COMMENT.COUNT = 1
  108.                 line = readln(fh)
  109.             end
  110.             WRITEBRUSER '"'CURRENT.BBSNAME'"' stem USER
  111.             if(rc ~= 0) then 
  112.             do
  113.                 say BBSREAD.LASTERROR
  114.                 exit
  115.             end
  116.             say "User written successfully."
  117.             say '--------------------------'
  118.         end
  119.     end
  120.     call close(fh)
  121. end
  122. else
  123. do
  124.     GETGLOBALCONFIG stem GLOBALCONFIG
  125.  
  126.     REQUESTFILE TITLE '"Save userlist to file:"' ID '"'GLOBALCONFIG.SAVEDIR'"' FP
  127.     if(rc ~= 0 | result = "") then exit
  128.     else file = result
  129.  
  130.     CURRENTSYSTEM stem CURRENT
  131.     if(rc = 30) then
  132.     do
  133.         say THOR.LASTERROR
  134.         exit
  135.     end
  136.     else
  137.     if(rc = 1) then
  138.     do
  139.         address(BBSREAD)
  140.         GETBBSLIST BBSLIST
  141.         if(rc ~= 0) then
  142.         do
  143.             say BBSREAD.LASTERROR
  144.             exit
  145.         end
  146.         address(thorport)
  147.         REQUESTLIST instem BBSLIST title '"Select system to save from:"' SIZEGADGET
  148.         if(rc ~= 0) then exit
  149.         else CURRENT.BBSNAME = result
  150.     end
  151.  
  152.     address(BBSREAD)
  153.  
  154.     GETBBSDATA '"'CURRENT.BBSNAME'"' stem BBSDATA
  155.     if(rc ~= 0) then 
  156.     do
  157.         say BBSREAD.LASTERROR
  158.         exit
  159.     end
  160.     
  161.     if(~open(fh, file, 'W')) then 
  162.     do
  163.         say "Failed to open file: "file
  164.         exit
  165.     end
  166.  
  167.     if(BBSDATA.FIRSTUSER < 1 | BBSDATA.LASTUSER < 1) then exit
  168.     else
  169.     do
  170.         address(thorport)
  171.         OPENPROGRESS TITLE '"' || 'Saving users from ' || CURRENT.BBSNAME || '"' TOTAL BBSDATA.LASTUSER-BBSDATA.FIRSTUSER+1 AT '"_Abort"'
  172.         if(rc ~= 0) then exit
  173.  
  174.         window = result
  175.  
  176.         do n = BBSDATA.FIRSTUSER to BBSDATA.LASTUSER
  177.  
  178.             address(thorport)
  179.             UPDATEPROGRESS REQ window CURRENT n-BBSDATA.FIRSTUSER+1 PT '"' || 'Saving user #' || n || '"'
  180.  
  181.             address(BBSREAD)
  182.             drop USERDATA.
  183.  
  184.             READBRUSER bbsname '"'CURRENT.BBSNAME'"' usernr n datastem USERDATA
  185.             if(rc ~= 0) then 
  186.             do
  187.                 say BBSREAD.LASTERROR
  188.                 call close(fh)
  189.                 address(thorport)
  190.                 CLOSEPROGRESS REQ window
  191.                 exit
  192.             end
  193.  
  194.             if ~bittst(USERDATA.FLAGS, UDB_DELETED) then
  195.             do
  196.                 drop USERTAGS.
  197.                 READBRUSER bbsname '"'CURRENT.BBSNAME'"' usernr n tagsstem USERTAGS
  198.                 if(rc ~= 0) then
  199.                 do
  200.                     say BBSREAD.LASTERROR
  201.                     address(thorport)
  202.                     CLOSEPROGRESS REQ window
  203.                     call close(fh)
  204.                     exit
  205.                 end
  206.  
  207.                 call writeln(fh, '#')
  208.                 call writeln(fh, 'Name: ' || USERTAGS.NAME)
  209.                 if(symbol("USERTAGS.ADDRESS") = "VAR") then do 
  210.                     call writeln(fh, 'Address: '|| USERTAGS.ADDRESS)
  211.                 end
  212.                 if(symbol("USERTAGS.ALIAS") = "VAR") then do 
  213.                     call writeln(fh, 'Alias: '|| USERTAGS.ALIAS)
  214.                 end
  215.                 if(symbol("USERTAGS.COMMENT.COUNT") = "VAR") then do 
  216.                     call writeln(fh, 'Comment: '|| USERTAGS.COMMENT.1)
  217.                 end
  218.             end
  219.         end
  220.         address(thorport)
  221.         CLOSEPROGRESS REQ window
  222.     end
  223.  
  224.     call close(fh)
  225. end
  226. exit
  227.